package controlador;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.stereotype.Controller;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.SelectorComposer;


import servicio.SActividad;
import servicio.SCliente;
import servicio.SComponente;
import servicio.SEnlaceInteres;
import servicio.SGarantia;
import servicio.SManoObra;
import servicio.SMarca;
import servicio.SMateriales;
import servicio.SNoticia;
import servicio.SPorcentaje;
import servicio.SSubComponente;
import servicio.STipoIndustria;
import servicio.STipoSubComponente;
import servicio.SMaquina;
import configuracion.GeneradorBeans;

@Controller
public abstract class CGeneral extends SelectorComposer<Component>  {
	private static final long serialVersionUID = 490757979306802411L;
	
	protected SMarca servicioMarca = GeneradorBeans.getServicioMarca();
	
	protected SComponente servicioComponente = GeneradorBeans
	.getServicioComponente();
	
	protected SGarantia servicioGarantia = GeneradorBeans
	.getServicioGarantia();
	
	protected STipoIndustria servicioTipoIndustria = GeneradorBeans
	.getServicioTipoIndustria();
	
	protected STipoSubComponente servicioTipoSubcomponente = GeneradorBeans
	.getServicioTipoSubComponente();
	
	protected SPorcentaje servicioPorcentaje = GeneradorBeans
	.getServicioPorcentaje();
	
	protected SManoObra servicioManoObra = GeneradorBeans
	.getServicioManoObra();
	
	protected SMateriales servicioMateriales = GeneradorBeans
	.getServicioMateriales();
	
	protected SActividad servicioActividad = GeneradorBeans
	.getServicioActividad();
	
	protected SEnlaceInteres servicioEnlace = GeneradorBeans
	.getServicioEnlaceInteres();
	
	protected SNoticia servicioNoticia = GeneradorBeans
	.getServicioNoticia();
	
	protected SCliente servicioCliente = GeneradorBeans
	.getServicioCliente();
	protected SSubComponente servicioSubComponente = GeneradorBeans
	.getServicioSubComponente();
	
	protected SMaquina servicioMaquina = GeneradorBeans
	.getServicioMaquina();
	
	
	
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {
		// TODO Auto-generated method stub
		super.doAfterCompose(comp);
		inicializar(comp);
	}

	public abstract void inicializar(Component comp);
	/* Metodo que permite enviar un correo electronico a cualquier destinatario */
	public boolean enviarEmailNotificacion(String correo, String mensajes) {
		try {
          
			System.out.println(correo);
			Properties props = new Properties();
			props.setProperty("mail.smtp.host", "smtp.gmail.com");
			props.setProperty("mail.smtp.starttls.enable", "true");
			props.setProperty("mail.smtp.port", "587");
			props.setProperty("mail.smtp.auth", "true");

			Session session = Session.getDefaultInstance(props);
			String asunto = "Notificacion de VMS";
			String remitente = "kairinj@gmail.com";
			String contrasena = "18432219";
			String destino = correo;
			String mensaje = mensajes;

			String destinos[] = destino.split(",");

			MimeMessage message = new MimeMessage(session);

			message.setFrom(new InternetAddress(remitente));

			Address[] receptores = new Address[destinos.length];
			int j = 0;
			while (j < destinos.length) {
				receptores[j] = new InternetAddress(destinos[j]);
				j++;
			}

			message.addRecipients(Message.RecipientType.TO, receptores);
			message.setSubject(asunto);
			message.setText(mensaje);

			Transport t = session.getTransport("smtp");
			t.connect(remitente, contrasena);
			t.sendMessage(message,
					message.getRecipients(Message.RecipientType.TO));

			t.close();

			return true;
		}

		catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	
	

}
